import { createApp } from 'vue'
import { createPinia } from 'pinia'
import router from './router'
import App from './App.vue'

// 导入样式
import './styles/main.css'

// 导入Font Awesome图标库
import '@fortawesome/fontawesome-free/css/all.min.css'

// 导入配置和工具
import { logger } from '@/utils/logger'
import { errorHandler } from '@/utils/error-handler'
import { config } from '@/config'

// 创建应用实例
const app = createApp(App)

// 创建Pinia实例
const pinia = createPinia()

// 使用插件
app.use(pinia)
app.use(router)

// 全局错误处理
app.config.errorHandler = (error, instance, info) => {
  errorHandler.handleGlobalError(error, `Vue错误: ${info}`)
}

// 初始化应用
async function initializeApp() {
  try {
    logger.info('民法典H5应用启动', {
      version: config.app.version,
      environment: import.meta.env.MODE
    })
    
    // 初始化应用状态
    const { useAppStore } = await import('@/stores/app')
    const { useArticleStore } = await import('@/stores/article')
    
    const appStore = useAppStore()
    const articleStore = useArticleStore()
    
    // 初始化设置
    appStore.initializeSettings()
    
    // 初始化本地数据
    articleStore.initializeFromStorage()
    
    logger.info('应用初始化完成')
    
    // 挂载应用
    app.mount('#app')
    
  } catch (error) {
    logger.error('应用初始化失败:', error)
    errorHandler.handleGlobalError(error, '应用初始化')
    
    // 仍然挂载应用，但显示错误状态
    app.mount('#app')
  }
}

// 启动应用
initializeApp()
